﻿\section{总结与展望}

\subsection{全文总结}

本设计基于 x86 体系结构处理器实现了一个简易的操作系统内核，覆盖操作系统内核引导装载、中断和异常事件处理、内存管理、进程管理、线程调度、文件系统等方面。
内核引导装载模块是整个操作系统的缩影，为操作系统内核构建了一个最小化运行环境。
中断和异常事件处理模块是操作系统内核的核心部分，操作系统内核在中断驱动下运作，请求分页、线程调度、系统调用均围绕中断和异常事件的处理展开。
进程管理和线程调度模块中实现了简易的多道程序并发，进程作为线程的容器统筹线程所需的各项资源，线程作为处理器的执行流以时间片轮转的方式被调度器调度执行。
文件系统模块则根据微软 FAT32 文件系统规范实现。

\subsection{不足之处及解决策略}

限于能力和精力有限以及初期设计时考虑不周，本设计实现的操作系统内核尚存在诸多不足：

\begin{itemize}
    \item 引导加载器为操作系统创建最小化运行环境，对于中断控制器等硬件的初始化操作则在操作系统内核中完成，这不利于操作系统在不同硬件平台上的移植。
    更合理的方案是将这些初始化工作在引导加载器中完成，通过 C 语言和汇编语言混合编程，丰富引导加载器的能力，减轻操作系统内核初始化的负担。
    \item 8259A 是已经被淘汰的中断控制器，虽从理解中断处理过程的角度而言 8295A 已经足够，但对于了解现代多处理器管理方案的角度而言，应采用 APIC 作为中断控制器。
    \item 内存虚拟页面的分配采用类似于首次适应的分配方案，经过多次分配与回收操作后，容易产生外部碎片。
    可仿照 GNU/Linux 的 slab 分配器，解决此问题。
    \item 内存管理模块的堆描述符从设计角度上支持多个堆描述符的级联，但在本设计中尚未实现对此情形的处理。
    \item 堆描述符表还能通过添加合适的排序算法使得查询可用内存块的效率更高，在本设计中尚未实现。
    \item 受限于中断控制器，进程、线程模块尚未对并发控制做更进一步的实现。
    \item 操作系统向用户进程提供内核资源（内核对象）时，直接将内核对象的指针返回给用户进程。
    从资源管理和安全隔离策略的角度考虑，应采用类似于 Windows 的设计方案，最好将各内核对象记录在由操作系统内核维护的资源表中，将资源分配给用户进程时，返回表项的指针，即句柄（Handle），
    用户通过句柄间接地访问内核资源，这样，即便内核资源位置发生变动，只需要修改资源表中的值，用户仍可通过句柄访问到正确的资源。
    \item 线程调度方案还可进一步丰富，实现类似于多级反馈队列的调度方式，即不同拥有不同时间片数量的线程分别居于不同的反馈队列中。
\end{itemize}
